package com.tech.mapper;

import com.tech.repository.entity.ShortMessage;
import com.tech.util.tuple.TwoTuple;

import java.util.List;
import java.util.TreeMap;

public interface ShortMessageDao {
	/**
	 * 通过ID查找系统短消息
	 *
	 * @param id 要查找系统短消息的所属ID
	 * @return 找到就返回，否则返回null
	 */
	ShortMessage getShortMessage(int id);

	/**
	 * 获取系统短消息编号递增的所有系统短消息
	 *
	 * @return 所有系统短消息信息，键为TwoTuple<买家ID，卖家ID>，值为消息列表
	 */
	TreeMap<TwoTuple<Integer, Integer>, List<ShortMessage>> getAllShortMessages();

	/**
	 * 添加新的系统短消息信息
	 *
	 * @param ShortMessage 新的系统短消息信息
	 * @return 新系统短消息所属ID
	 */
	int addShortMessage(ShortMessage ShortMessage);

	/**
	 * 添加新的系统短消息信息
	 *
	 * @param ShortMessageList 系统短消息列表
	 * @return 影响的行数
	 */
	int[] addShortMessages(List<ShortMessage> ShortMessageList);

	/**
	 * 根据ID删除指定系统短消息
	 *
	 * @param id 要删除系统短消息的ID
	 * @return 是否删除成功，不存在时返回false
	 */
	boolean delShortMessage(int id);

	/**
	 * 根据ID批量删除系统短消息
	 *
	 * @param ShortMessageList 要删除系统短消息的ID列表
	 * @return 影响到的行数
	 */
	int[] delShortMessages(List<Integer> ShortMessageList);

	/**
	 * 删除指定用户的所有系统短消息
	 *
	 * @param userId 用户ID
	 * @return 影响到的行数
	 */
	int delUserShortMessage(int userId);

	/**
	 * 删除所有系统短消息
	 *
	 * @return 如果系统短消息数据改变就返回true
	 */
	boolean delAllShortMessages();
}
